package com.lilingguo.easyserver.pojo;

import lombok.AccessLevel;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;

import java.io.Serializable;
import java.util.Date;
import java.util.Objects;

/**
 * 服务信息类
 * 记录单个服务实例的信息
 *
 * @Author: 黎铃果
 * @Date: 2020/05/28 16:30
 */
@Data
public class ServiceInfo implements Serializable {

    private static final long serialVersionUID = 3568395274278L;

    public static final String OK = "UP";
    public static final String ERROR = "DOWN";

    /**
     * 服务唯一标识 (数字)
     */
    private Long id;
    /**
     * 服务名
     */
    private String name;
    /**
     * 服务IP地址
     */
    private String ip;
    /**
     * 服务访问端口
     */
    private int port;
    /**
     * 服务注册url
     */
    private String registerUrl;
    /**
     * 服务注册时间
     */
    private Date registerTime;
    /**
     * 服务最后一次续约的时间 (millisecond)
     */
    private long ttl;
    /**
     * 服务寿命 (millisecond)
     */
    private long maximalLife;
    /**
     * 服务状态 (0 -> alive, 1 -> expired)
     */
    private Integer status = null;

    /**
     * 服务唯一标识 (字符串："name:ip:port")
     */
    @Getter(AccessLevel.NONE)
    @Setter(AccessLevel.NONE)
    private String idStr;

    /**
     * 获取服务唯一标识 (字符串："name:ip:port")
     * @return 字符串标识
     */
    public String getIdStr() {
        if (this.idStr == null) {
            this.idStr = this.name + ":" + this.ip + ":" + this.port;
        }
        return this.idStr;
    }

}
